package com.bestcem.xm.wallet.util.business;

import cn.hutool.core.lang.ObjectId;
import com.bestcem.xm.common.core.uitls.DateUtil;
import com.bestcem.xm.wallet.entity.mysql.BaseEntity;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.Objects;

/**
 * 数据库工具类
 *
 * @author qiongyu.cui <qiongyu.cui@idiaoyan.com>
 * @version v1.0
 * @date 2022/3/31 21:17
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class DataBaseUtil {

    /**
     * 获取数据库主键id
     *
     * @return java.lang.String
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/31 21:25
     */
    public static String generateId() {
        return ObjectId.next();
    }

    /**
     * 获取数据库当前时间
     *
     * @return java.util.Date
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/31 21:32
     */
    public static Date getDate() {
        return DateUtil.getCommonDate();
    }

    /**
     * 设置mysql对象的创建时间和更新时间，如果存在则不设置，不存在则设置
     *
     * @param entity mysql实体对象
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/31 21:36
     */
    public static void setCreateAndUpdateTime(BaseEntity entity) {
        if (Objects.isNull(entity)) {
            return;
        }
        if (Objects.isNull(entity.getCreateTime())) {
            entity.setCreateTime(getDate());
        }
        if (Objects.isNull(entity.getUpdateTime())) {
            entity.setUpdateTime(getDate());
        }
    }

    /**
     * 设置mysql对象的更新时间，如果存在则不设置，不存在则设置
     *
     * @param entity mysql实体对象
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/31 21:39
     */
    public static void setUpdateTime(BaseEntity entity) {
        if (Objects.isNull(entity)) {
            return;
        }
        if (Objects.isNull(entity.getUpdateTime())) {
            entity.setUpdateTime(getDate());
        }
    }

}
